
// 使用RTK创建store, createSlice 创建reducer的切片
import {createSlice } from "@reduxjs/toolkit";
const userSlice = createSlice({ // 需要一个配置对象作为参数，通过对象的不同属性来指定它的配置
  name:'user', // 用来自动生成 action 中的 type
  initialState:{ // state的初始值
    user:{
      id:'111',
      name:"zhang san",
      age:18
    }
  },
  // 指定state的各种操作，直接在对象中添加方法
  reducers:{
    setUser: (state,action)=>{
      state.user = action.payload;
    }
  }
})

// 切片对象会自动的帮助我们生成action
 const { setUser } = userSlice.actions


// 异步网络请求（模拟）
function queryUser(){
  return new Promise(resolve=>{
    setTimeout(()=>{
      resolve({id:'222',name:'li ha ha',age:18})
    },200)
  })
}
// 封装一个函数，调用同步方法去修改值
function getAsyncUser(){
  return async (dispatch)=>{
    const user = await queryUser();
    dispatch(setUser(user))
  }
}

export { getAsyncUser}
// 导出 reducer
export default userSlice.reducer